package com.leetCode.problem;

/**
 * Description:
 * Copyright:   Copyright (c)2019
 * Company:     zefu
 *
 * @author: 张李鑫
 * @version: 1.0
 * Create at:   2021-12-22 15:41:51
 * <p>
 * Modification History:
 * Date         Author      Version     Description
 * ------------------------------------------------------------------
 * 2021-12-22     张李鑫                     1.0         1.0 Version
 */
public class Problem55 {
    /**
     * 给定一个非负整数数组 nums ，你最初位于数组的 第一个下标 。
     *
     * 数组中的每个元素代表你在该位置可以跳跃的最大长度。
     *
     * 判断你是否能够到达最后一个下标。
     * @param nums
     * @return
     */
    public static boolean canJump(int[] nums) {
        int rightMax = nums[0];
        for (int i = 1; i < nums.length; i++) {
            if (rightMax >= i) {
                rightMax = Math.max(rightMax, i + nums[i]);
            }
        }
        return rightMax >= nums.length-1;
    }

    public static boolean canJump1(int[] nums) {
        int rightMax = nums[0];
        for (int i = 1; i < nums.length; i++) {
            if (rightMax < i) {
                return false;
            }
            rightMax = Math.max(rightMax, i + nums[i]);
        }
        return true;
    }

    public static void main(String[] args) {
        int[] arr = {2, 3, 1, 1, 4};
        System.out.println(canJump(arr));
    }
}
